/**
 * 用户模块：存储token、个人信息
 */

// 导入登录接口
import { loginApi, getUserInfoApi } from '@/api/user'
import { setToken, getToken, delToken } from '@/utils/auth'

export default {
  namespaced: true,
  // 1. 定义变量
  state: {
    // 先从本地获取，获取到值就存起来
    // token值
    token: getToken() || '',
    userInfo: {}
  },
  // 2. 修改变量
  mutations: {
    /**
     *
     * @param {*} state 所有变量
     * @param {*} payload 调用setToken方法传入的参数：token
     */
    setToken (state, payload) {
      // 1.内存
      state.token = payload
      // 2.本地
      setToken(payload)
    },
    delToken (state) {
      // 1.内存
      state.token = ''
      // 2.本地
      delToken()
    },
    getUserInfo (state, payload) {
      state.userInfo = payload
    }
  },
  // 3. 发请求（异步）
  actions: {
    /**
     *登录
     * @param {*} ctx 上下文
     * @param {*} payload 页面组件调用getTokenAction传入的参数：用户名和密码
     */
    async getTokenAction ({ commit }, payload) {
      const { data } = await loginApi(payload)
      console.log('token', data)
      if (data.code === 0) {
        commit('setToken', data.token)
      }

      // 把请求接收到的结果，传给组件页面，组件页面去跳转首页
      return data
    },

    /**
     * 获取用户信息
     */
    async getUserAction ({ commit }) {
      const { data } = await getUserInfoApi()
      console.log('用户信息', data)
      commit('getUserInfo', data.data)
    }
  }
}
